package com.wpre.lotterysystem.service.Impl;

import com.wpre.lotterysystem.common.errcode.ServiceErrorCodeConstants;
import com.wpre.lotterysystem.common.exception.ServiceException;
import com.wpre.lotterysystem.service.PictureService;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: LianBao
 * Date: 2024-12-20
 * Time: 18:26
 */
@Service
public class PictureServiceImpl implements PictureService {

    @Value("${pic.local-path}")
    private String localPath;//图片存储的目录,使用配置的方式

    @Override
    public String savePicture(MultipartFile multipartFile) {
        //1.创建一个目录,将来所有保存的图片都保存在这里
        File dir = new File(localPath);
        if (!dir.exists()) {
            //如果路径不存在,就新建一个目录
            dir.mkdirs();//

        }
        //2.创建索引,将上传的文件名进行转换,转换成一个唯一的值 例如用户上传的图片对应保存的图片, a.jpg -->xx.jpg
        //2.1 获取当前上传的文件的文件全名称
        String filename = multipartFile.getOriginalFilename();
        assert filename != null;//断言一下,originalFilename不能为空
        //2.2 获取文件的后缀名
        String suffix = filename.substring(filename.lastIndexOf("."));//从最后一个点开始截取
        //2.3 生成索引
        UUID uuid = UUID.randomUUID();

        //2.4 将索引和后缀进行拼接
        filename = uuid + suffix;

        try {
            //3.图片保存
            multipartFile.transferTo(new File(localPath + "/" + filename));//目标路径/文件名
            //transferTo : 将当前的multipartFile(也就是图片) 写入进一个目标文件localPath/filename
        } catch (IOException e) {
            throw new ServiceException(ServiceErrorCodeConstants.PICTURE_UPLOAD_ERROR);
        }
        return filename;
    }
}
